#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN=2010;
LL n,k,head[MAXN],cnt,f[MAXN][MAXN],siz[MAXN];
struct edge
{
	LL v,next,val;
}e[MAXN*2];
void addedge(LL x,LL y,LL z)
{
	e[++cnt]=(edge){y,head[x],z};
	head[x]=cnt;
	return;
}
void dp(LL u,LL fa)
{
	siz[u]=1;
	f[u][0]=f[u][1]=0;
	for(LL i=head[u];i;i=e[i].next)
	{
		LL v=e[i].v;
		if(v==fa)continue;
		dp(v,u);
		siz[u]+=siz[v];
		for(LL j=siz[u];j>=0;--j)
			for(LL l=0;l<=min(siz[v],j);++l)
				f[u][j]=max(f[u][j],f[u][j-l]+(l*(k-l)+(siz[v]-l)*(n-k-(siz[v]-l)))*e[i].val+f[v][l]);
	}
	return;
}
int main()
{
	scanf("%lld%lld",&n,&k);
	memset(f,128,sizeof(f));
	for(LL i=1;i<n;++i)
	{
		LL x,y,z;
		scanf("%lld%lld%lld",&x,&y,&z);
		addedge(x,y,z);
		addedge(y,x,z);
	}
	dp(1,0);
	printf("%lld\n",f[1][k]);
	return 0;
}
